package cn.edu.wynu.d4_jdk8_time;

/*
Instant 时间线上的某个时刻/时间戳：
通过获取Instant的对象可以拿到此刻的时间，该时间由两部分组成:从1970-01-01 00:00:00 开始走到此刻的总秒数+不够1秒的纳秒数

            方法名                                 说明
public static Instant now()         获取当前时间的Instant对象(标准时间)
public long getEpochSecond()        获取从1970-01-01T00:00:00开始记录的秒数
public int getNano()                从时间线开始，获取从第二个开始的纳秒数
plusMillis plusSeconds plusNanos    判断系列的方法
minusMillis minusSeconds minusNanos 减少时间系列的方法
equals、isBefore、isAfter           增加时间系列的方法

作用：可以用来记录代码的执行时间，或用于记录用户操作某个事件的时间点。
传统的Date类，只能精确到毫秒，并且是可变对象;
新增的Instant类，可以精确到纳秒，并且是不可变对象，推荐用Instant代替Date。
*/

import java.time.Instant;
import java.time.LocalDateTime;

public class Test5_Instant {
    public static void main(String[] args) {
        // 掌握Instant的使用。
        // 1、创建Instant的对象，获取此刻时间信息
        Instant now = Instant.now(); // 不可变对象

        // 2、获取总秒数
        long second = now.getEpochSecond();
        System.out.println(second);

        // 3、不够1秒的纳秒数
        int nano = now.getNano();
        System.out.println(nano);

        System.out.println(now);

        Instant instant = now.plusNanos(111); // 添加纳秒

        // Instant对象的作用：做代码的性能分析，或者记录用户的操作时间点
        Instant now1 = Instant.now();
        // 代码执行。。。。
        Instant now2 = Instant.now();

        LocalDateTime l = LocalDateTime.now();
    }
}
